IntelliJ IDEA使用技巧(macOS版)

虽然我在日常开发中使用的是IntelliJ IDEA,但是基本上只是使用了一些基本的功能,很多技巧都没有使用。趁着这次给新人分享IDEA的使用,我重新学习整理了IDEA的使用技巧。

IDEA的版本是IntelliJ IDEA Ultimate 2020.1.1

代码模板

文件代码模板

文件代码模板是新建文件时使用的模板,设置路径如下:Preferences -> Editor -> File and Code Template,也可以直接使用快捷键command + ,来打开Preferences

File_and_Code_Template
在这里定义了IDEA内置的文件代码模板,当新建一个文件时(比如Java class),就会按照这里的模板生成指定的代码文件。

另外,我们可以在Includes里设置文件头:

File_header
设置之后创建Java类时就会在文件头上自动加上作者、新建日期等信息:

File_header_example

实时代码模板

IDEA提供了强大的实时代码模板功能,并且内置了很多模板,比如输入sout就会快速生成System.out.println();

配置路径如下:Preferences -> Editor -> Live Templates

Live_Templates

介绍几个常用的代码模板:

  • ifn:生成参数为null的判断代码
  • inn:生成参数不为null的判断代码
  • psvm:生成main函数
  • sout:生成System.out.println();
  • souf:生成System.out.printf("");
  • serr:生成System.err.println();
  • prsf:生成private static final
  • psf:生成public static final
  • psfi:生成public static final int
  • psf:生成public static final
  • St:生成String
  • thr:生成throw new

自定义实时算法模板

除了这些内置的代码模板以外,我们还可以自己添加定制的代码模板。

Live Templates页面点击+,选择Template Group,创建代码模板组。然后点击+,选择Live Template,创建一个代码模板。

比如,我们可以创建两个代码模板:

  • prI:生成private Integer
  • prS:生成private String

my_template
除了上面简单的Live Templates,还可以定义稍微复杂点的模板,控制光标的位置:

1
2
3
4
5
6
/**
* $VAR1$
*/
private String $VAR2$;

$END$

上面的模板定义了一个带注释的private String,光标首先会停留在$VAR1$处,写完注释后光标跳到$VAR2$处,定义好变量名最后跳到$END$

live_templates_1

Postfix Completion

Postfix Completion本质上也是一种代码模板,它可以更智能地补全代码。

它具体是做什么的,我们可以通过下面的GIF演示图来说明:

新建对象的实例:

new_command

为对象实例赋值:

var_command

可以看到Postfix Completion和实时代码模板非常像,它在我们代码片段的后面使用,可以减少鼠标的移动,从而加速我们的一些高频操作。

配置路径如下:Preferences -> Editor -> Postfix Completion

Postfix_Completion

IDEA内置了很多Postfix Completion,除了上面演示的newvar,还有下面一些比较常用的模板:

  • for:为可遍历对象生成foreach循环框架
  • fori:为一个数字生成循环框架
  • nnnotnull:为对象生成不为null判断的框架
  • null:为对象生成为null判断的框架
  • return:在对象前面添加return
  • field:为类创建成员变量
  • sout:为对象包裹System.out.println()方法
  • try:为表达式生成try-catch框架

常用快捷键

快捷键图

ReferenceCardForMac

导出官方快捷键图片:

shift + command + a,输入key reference

代码查看

当前文件查找

command + f

全局查找

shift + command + f

当前文件替换

command + r

全局替换

shift + command + r

查找类(class)

command + o

查找文件(file)

shift + command + o

查找符号(symbol)

option + command + o

查找action

shift + command + a

查找class+file+symbol+action

点击两次shift

跳转到下一个 高亮错误 / 警告位置

F2

跳转到上一个高亮错误 / 警告位置

Shift + F2

查看类继承关系图

1
2
option + command + u
shift + option + command + u

查看函数调用层次

ctrl + option + h

展示类中变量和方法

command + F12

展开折叠代码

command + +/-

展开折叠所有代码

shift + command + +/-

代码跳转

查看最近文件

command + e

跳转历史光标所在处

option + command + 方向键

跳转到指定行

command + l

跳转到指定文件夹

点击两次shift,再输入/文件夹名

从方法使用处跳转到方法定义

command + 鼠标左键

command + B

从方法使用处跳转到方法的实现

option + command + 鼠标左键

option + command + B

接口跳转到实现

option + command + B

实现跳转到接口

command + U

书签(bookmarks)

设置书签

F3

设置带有标记的(mnemonic)书签

便于记忆的书签指的是,我们在设置书签时可以添加一个数字或者字母来标记这个书签。便于之后书签之间的跳转。

option + F3

带有标记的书签(mnemonic bookmark)之间的跳转

ctrl + 数字/字母

显示所有的书签

command + F3

bookmarks

收藏列表

打开收藏夹

command + 2

添加到收藏列表

option + shift + f

代码编辑

删除当前行

command + back space

复制当前行

command + d

自动代码提示

option + enter

非常智能,不同场景下有不同的提示。

变量大小写切换

shift + command + u

代码格式化

option + command + l

代码自动收尾

shift + command + enter

比如一行代码完成后输入shift + command + enter,会在这行代码末尾加上;,光标定位到末尾。

代码收尾不仅仅是添加;

complete_statement

这里IDEA会为if表达式自动加上大括号。

对选中的代码弹出环绕选项

option + command + t

surround-with

插入自定义动态代码模板

command + j

command+j

生成代码(构造函数、Getter/Setter方法、equals方法、hashCode方法、toString方法)

1
2
command + n
ctrl + enter

command+n

上下移动选中的代码

option + shift + 上/下键

option+shift+up:down

选中所有相同的代码

ctrl + command + G

ctrl+command+g

在当前目录下新建文件

ctrl + option + n

复制当前文件

F5

移动当前文件

F6

复制文件名

command + c

复制完整的文件路径

shift + command + c

查看剪切板内容

shift + command + v

重构

打开重构对话框

ctrl + T

重命名变量、文件、文件夹

shift + F6

改变变量的类型

shift + command + F6

修改方法的签名

command + F6

快速提取变量

option + command + v

快速提取常量

option + command + c

快速提取成员变量

option + command + f

快速提取变量到方法参数

option + command + p

快速提取方法

option + command + m

git的集成

查看最近修改

ctrl + shift + option + 上/下键

撤销修改

option + command + z

代码运行

运行光标所在上下文的方法

ctrl + shift + r

调试光标所在上下文的方法

ctrl + shift + d

打开历史运行的方法列表

ctrl + option + r

打开历史调试的方法列表

ctrl + option + d

断点调试

添加/关闭断点

command + F8

查看所有断点

shift + command + F8

设置条件断点

shift + command + F8

表达式求职

option + F8

单步运行

F8

单步跟踪

F7

运行到光标位置

option + F9

resume

1
2
option + command + r
F9

设置变量的值

F2

IntelliJ IDEA提供的注释

IntelliJ IDEA提供了一些注释。IDEA会扫描并分析这些使用注释的代码,如果有问题就会提示用户。注解如下:

  • @Nls:表示带注释的代码是需要本地化的字符串。
  • @NonNls:表示带注释的代码是用户不可见的字符串,它不需要本地化,并且不包含需要本地化的字符串。当你使用@NonNls注释代码时,本地化工具将跳过次元素和其他的字符串。
  • @PropertyKey:表示方法参数接收必须是特定resource bundle中的有效属性。当参数不是resource bundle中的有效属性,IDEA会将其显示为错误。
  • @TestOnly:表示该方法或者构造器只能在测试代码中被调用
  • @Contract:用户可以在该注释中指定方法必须遵守的规则。一旦规则被打破,IDEA就会报错
  • @Nullable:表示变量、参数、返回值可以为null,IDEA会提示你处理该参数为null的情况
  • @NotNull:表示变量、参数、返回值不可以为null,IDEA会在调用处提示你处理null的情况

https://www.jetbrains.com/help/idea/discover-intellij-idea.html
https://juejin.im/post/5d47f4e851882534d152a206
https://atips.cn/idea/
http://blog.didispace.com/intellij-idea-some-features-sam-1/